package com.jiangxun.leetcode.editor.cn;
//<p>给你一个正整数&nbsp;<code>n</code> ，生成一个包含 <code>1</code> 到&nbsp;<code>n<sup>2</sup></code>&nbsp;所有元素，且元素按顺时针顺序螺旋排列的&nbsp;<code>n x n</code> 正方形矩阵 <code>matrix</code> 。</p>
//
//<p>&nbsp;</p>
//
//<p><strong>示例 1：</strong></p> 
//<img alt="" src="https://assets.leetcode.com/uploads/2020/11/13/spiraln.jpg" style="width: 242px; height: 242px;" /> 
//<pre>
//<strong>输入：</strong>n = 3
//<strong>输出：</strong>[[1,2,3],[8,9,4],[7,6,5]]
//</pre>
//
//<p><strong>示例 2：</strong></p>
//
//<pre>
//<strong>输入：</strong>n = 1
//<strong>输出：</strong>[[1]]
//</pre>
//
//<p>&nbsp;</p>
//
//<p><strong>提示：</strong></p>
//
//<ul> 
// <li><code>1 &lt;= n &lt;= 20</code></li> 
//</ul>
//
//<div><div>Related Topics</div><div><li>数组</li><li>矩阵</li><li>模拟</li></div></div><br><div><li>👍 1340</li><li>👎 0</li></div>

//leetcode submit region begin(Prohibit modification and deletion)
class Solution59 {
    public int[][] generateMatrix(int n) {
        int[][]nums=new int[n][n];
        int startX=0;
        int startY=0;
        //循环圈数
        int loop=1;
        //计数
        int number=1;
        //i是行，j是列
        int i,j;
        //设定偏移值1
        int offset=1;

        while(loop<=n/2){
            //上
            for(j=startY;j<n-offset;j++){
                nums[startX][j]=number++;
            }
            //右
            for(i=startX;i<n-offset;i++){
                nums[i][j]=number++;
            }
            //下
            for(;j>startY;j--){
                nums[i][j]=number++;
            }
            //左
            for(;i>startX;i--){
                nums[i][j]=number++;
            }
            startX++;
            startY++;
            offset++;
            loop++;
        }
        if(n%2==1){
            nums[startX][startX]=number;
        }
        return nums;
    }
}
//leetcode submit region end(Prohibit modification and deletion)
